package com.book.manager.service;

import com.book.manager.pojo.OrderBook;
import com.book.manager.pojo.Orders;
import com.book.manager.dao.OrdersDAO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class OrdersService {
    @Autowired
    OrdersDAO orderDAO;
    @Autowired
    BookService bookService;
    @Autowired
    OrderBookService orderBookService;


   // 返回指定类型的订单列表
 public List<Orders> list(int type){
        // 根据类型查询订单
        List<Orders> orders=orderDAO.findAllByType(type);
        // 过滤掉状态为0的订单
        orders.removeIf(orders1 -> orders1.getStatus() == 0);
        // 查询订单对应的订单簿列表
        List<OrderBook> orderBooks;

        // 遍历订单列表
        for(Orders order:orders){
            // 根据订单id查询订单簿列表
            orderBooks=orderBookService.listAllByOrderId(order.getId());
            // 将订单簿列表设置到订单对象中
            order.setOrderBooks(orderBooks);
        }
        // 返回订单列表
        return orders;
    }

    // 返回所有订单列表
    public List<Orders> listall(){
        // 根据类型查询订单
        List<Orders> orders=orderDAO.findAll();
        // 查询订单对应的订单簿列表
        List<OrderBook> orderBooks;

        // 遍历订单列表
        for(Orders order:orders){
            // 根据订单id查询订单簿列表
            orderBooks=orderBookService.listAllByOrderId(order.getId());

            // 将订单簿列表设置到订单对象中
            order.setOrderBooks(orderBooks);
        }
        // 返回订单列表
        return orders;
    }

    // 添加订单
    public void add(Orders orders){
        // 保存订单
        this.orderDAO.save(orders);
    }

    // 根据id删除订单
    public void deleteById(int id){
        // 删除订单
        orderDAO.deleteById(id);
    }

    // 根据id查询订单
    public Orders findById(int id){
        // 根据id查询订单
        Orders orders;
        orders=orderDAO.findById(id);
        // 查询订单对应的订单簿列表
        List<OrderBook> orderBooks=orderBookService.listAllByOrderId(id);
        // 将订单簿列表设置到订单对象中
        orders.setOrderBooks(orderBooks);
        // 返回订单
        return orders;
    }

    // 根据id查询订单
    public Orders findid(int id){
        // 根据id查询订单
        return orderDAO.findById(id);
    }

    // 根据状态查询订单
    public List<Orders> findByStatus(int status){
        // 根据状态查询订单
        List<Orders> orders=orderDAO.findAllByStatus(status);
        // 查询订单对应的订单簿列表
        List<OrderBook> orderBooks;

        // 遍历订单列表
        for(Orders order:orders){
            // 根据订单id查询订单簿列表
            orderBooks=orderBookService.listAllByOrderId(order.getId());
            // 将订单簿列表设置到订单对象中
            order.setOrderBooks(orderBooks);
        }
        // 返回订单列表
        return orders;
    }

    // 根据id和类型查询订单
    public List<Orders> findByIdAndType(int id,int type){
        // 根据类型查询订单
        List<Orders> orders=orderDAO.findAllByType(type);
        // 查询订单对应的订单簿列表
        List<OrderBook> orderBooks;

        // 遍历订单列表
        for(Orders order:orders){
            // 根据订单id查询订单簿列表
            orderBooks=orderBookService.listAllByOrderId(order.getId());
            // 将订单簿列表设置到订单对象中
            order.setOrderBooks(orderBooks);
        }
        // 返回订单列表
        return orders;
    }
}
